package com.github.icloudpay.crm.core.api;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.icloudpay.crm.core.biz.ConsumerBiz;
import com.github.icloudpay.crm.core.biz.PasswordBiz;
import com.github.wxiaoqi.security.auth.common.util.SnowFlake;
import com.github.wxiaoqi.security.common.msg.ResponseCode;

@Controller
@RequestMapping("consumer")
public class ConsumerAction {
	private static final Logger logger = LoggerFactory.getLogger(ConsumerAction.class);
	@Autowired
	private ConsumerBiz consumerBiz;
	@Autowired
	private PasswordBiz passwordBiz;
	
	/**
	 * 获取用户统计数据
	 * @author centerroot
	 * @time 创建时间:2018年5月18日下午5:01:13
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/getConsumerStatistics",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> getConsumerStatistics(@RequestBody Map<String, Object> param){
		logger.info("获取用户统计数据 请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.getConsumerStatistics(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("获取用户统计数据 响应参数：{}",respMap);
		return respMap;
	}
	
	
	/**
	 * 用户基本信息录入
	 * @author centerroot
	 * @time 创建时间:2018年5月21日上午10:43:56
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/savePersonalBaseInfo",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> savePersonalBaseInfo(@RequestBody Map<String, Object> param){
		logger.info("用户基本信息录入 请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.savePersonalBaseInfo(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("用户基本信息录入 响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 用户安全信息查询
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/getSecurityInfo",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> getSecurityInfo(@RequestBody Map<String, Object> param){
		logger.info("用户安全信息状态查询 请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.getSecurityInfo(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("用户安全信息状态查询 响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 用户安全信息修改手机号
	 * 1、判断用户是否存在
	 * 2、判断用户原手机号是否正确
	 * 3、判断原手机号和原验证码正确性
	 * 4、判断新手机号和新验证码正确性
	 * 5、更换手机号
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/modifyConsumerMobile",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> modifyConsumerMobile(@RequestBody Map<String, Object> param){
		logger.info("用户安全信息修改手机号 请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.modifyConsumerMobile(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("用户安全信息修改手机号 响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 用户/商户实名认证
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/verifiedRealName",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> verifiedRealName(@RequestBody Map<String, Object> param){
		logger.info("用户/商户实名认证    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.verifiedRealName(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("用户/商户实名认证 响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 修改用户登录密码
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/updatePassword",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> updatePassword(@RequestBody Map<String, Object> param){
		logger.info("修改用户登录密码    请求参数：{}",param);
		Map<String, Object> respMap = passwordBiz.updatePassword(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("修改用户登录密码  响应参数：{}",respMap);
		return respMap;
	}
	/**
	 * 修改用户支付密码
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/updatePayPassword",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> updatePayPassword(@RequestBody Map<String, Object> param){
		logger.info("修改用户支付密码    请求参数：{}",param);
		Map<String, Object> respMap = passwordBiz.updatePayPassword(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("修改用户支付密码  响应参数：{}",respMap);
		return respMap;
	}
	/**
	 * 设置用户支付密码
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/setPayPassword",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> setPayPassword(@RequestBody Map<String, Object> param){
		logger.info("设置用户支付密码    请求参数：{}",param);
		Map<String, Object> respMap = passwordBiz.setPayPassword(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("设置用户支付密码  响应参数：{}",respMap);
		return respMap;
	}

	/***
	 * 根据手机号获取用户信息
	 * @param username登录用户名即手机号;
	 * password 登录密码;
	 */
	@RequestMapping(value = "/queryConsumerinfoByMobile", method = RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> queryConsumerinfoByMobile(@RequestBody Map<String, Object> param) {
		logger.info("根据手机号获取用户信息 请求参数：{}", param);
		Map<String, Object> respMap = consumerBiz.queryConsumerinfoByMobile(String.valueOf(param.get("username")),
				String.valueOf(param.get("password")));
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("根据手机号获取用户信息  响应参数：{}", respMap);
		return respMap;
	}
	
	/**
	 * 查询用户消息列表
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/getConsumerMessage",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> getConsumerMessage(@RequestBody Map<String, Object> param){
		logger.info("查询用户消息列表    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.getConsumerMessage(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("查询用户消息列表    响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 修改用户消息状态
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/updateConsumerMessage",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> updateConsumerMessage(@RequestBody Map<String, Object> param){
		logger.info("修改用户消息状态    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.updateConsumerMessage(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("修改用户消息状态    响应参数：{}",respMap);
		return respMap;
	}
	
	
	/**
	 * 查询用户最后收入记录
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/getLastIncomeRecord",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> getLastIncomeRecord(@RequestBody Map<String, Object> param){
		logger.info("查询用户最后收入记录    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.getLastIncomeRecord(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("查询用户最后收入记录    响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 查询用户交易记录
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/queryPersonaTransactionRecord",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> queryPersonaTransactionRecord(@RequestBody Map<String, Object> param){
		logger.info("查询用户交易记录    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.queryPersonaTransactionRecord(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("查询用户交易记录    响应参数：{}",respMap);
		return respMap;
	}
	/**
	 * 查询用户提现记录
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/queryWithDrawRecord",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> queryWithDrawRecord(@RequestBody Map<String, Object> param){
		logger.info("查询用户提现记录    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.queryWithDrawRecord(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("查询用户提现记录    响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 查询商户交易记录
	 * @author centerroot
	 * @time 创建时间:2018年5月21日下午2:48:35
	 * @param param
	 * @return
	 */
	@RequestMapping(value = "/queryMerchantTransactionRecord",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> queryMerchantTransactionRecord(@RequestBody Map<String, Object> param){
		logger.info("查询商户交易记录    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.queryMerchantTransactionRecord(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("查询商户交易记录    响应参数：{}",respMap);
		return respMap;
	}
	
	/**
	 * 新用户注册
	 * @param 
	 * 
	 * */
	@RequestMapping(value = "/userRegister",method = RequestMethod.POST)
    @ResponseBody
	public Map<String, Object> userRegister(@RequestBody Map<String, Object> param){
		logger.info("用户注册    请求参数：{}",param);
		Map<String, Object> respMap = consumerBiz.userRegister(param);
		if (ResponseCode.OK.getCode().equals(respMap.get("code"))) {
			respMap.put("sucess", true);
		} else {
			respMap.put("sucess", false);
		}
		logger.info("用户注册    响应参数：{}",respMap);
		return respMap;
	}
	
}